#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>


static struct tasklet_struct tasklet;

static void tasklet_handler(unsigned long data)
{
    printk(KERN_INFO "Tasklet_Hi running (data=%lu)\n", data);
}

static int __init tasklet_example_init(void)
{
    printk(KERN_INFO "Tasklet_Hi example module loaded\n");
    tasklet_init(&tasklet, tasklet_handler, 1);
    tasklet_hi_schedule(&tasklet);

    return 0;
}

static void __exit tasklet_example_exit(void)
{
    tasklet_kill(&tasklet);
    printk(KERN_INFO "Tasklet_Hi example module unloaded\n");
}

module_init(tasklet_example_init);
module_exit(tasklet_example_exit);
MODULE_LICENSE("GPL");
